From: Florian Müllner Date: Thu, 25 Jan 2024 23:56:35 +0000 (+0100) Subject: ci: Check snippets in coding style X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~281^2~2^2~103 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=a6d35fdd2abd63d23c7a9d093645f760691539a0;p=gnome-shell.git ci: Check snippets in coding style To avoid having the coding style get out of sync with the actual coding style in the future, run eslint on the individual snippets when either the guide or the linter config change. Part-of: --- diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8dadcf6aa..8d881ba7f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -149,6 +149,21 @@ eslint: junit: ${LINT_LOG} when: always +eslint-doc: + extends: + - .fdo.distribution-image@fedora + - .gnome-shell.fedora + stage: review + script: + - export NODE_PATH=$(npm root -g) + - ./.gitlab-ci/eslint-coding-style.sh + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + changes: + - HACKING.md + - .eslintrc.yml + - lint/* + potfile_c_check: extends: - .fdo.distribution-image@fedora diff --git a/.gitlab-ci/eslint-coding-style.sh b/.gitlab-ci/eslint-coding-style.sh new file mode 100755 index 000000000..783075bd8 --- /dev/null +++ b/.gitlab-ci/eslint-coding-style.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +SRCDIR=$(realpath $(dirname $0)/..) +OUTDIR=$(mktemp --directory --tmpdir=$SRCDIR) +trap "rm -rf $OUTDIR" EXIT + +# Turn ```javascript``` code snippets in the +# style guide into .js files in $OUTDIR +awk --assign dir=$OUTDIR -- ' + BEGIN { + do_print = 0; + cur = 0; + } + + # end of code snippet + /```$/ { + do_print = 0; + cur++; + } + + do_print { + # remove one level of indent + sub(" ","") + + # the following are class snippets, turn them + # into functions to not confuse eslint + sub("moveActor","function moveActor") + sub("desaturateActor","function desaturateActor") + + # finally, append to the currently generated .js file + print >> dir "/" cur ".js"; + } + + # start of code snippet + /```javascript$/ { + do_print = 1; + } +' HACKING.md + +eslint \ + --rule 'no-undef: off' \ + --rule 'no-unused-vars: off' \ + --rule 'no-invalid-this: off' $OUTDIR/*.js